/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package managertelaCadastros;

import classes.Funcionario;
import classes.Servico;
import classes.ServicoFuncionario;
import dao.DaoServicoFuncionario;
import java.util.List;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import managerPesquisa.managerPesquisaFuncionario;
import managerPesquisa.managerPesquisaServico;
import tabeladedados.TabelaDeDados;
import telaCadastros.CadServicoFuncionario;

/**
 *
 * @author fumio
 */
public class managerCadServicoFuncionario implements interfaceManager {

    private TabelaDeDados tabela = null;
    private ServicoFuncionario servicoFuncionario;
    private CadServicoFuncionario cadServicoFuncionario;
    private DaoServicoFuncionario daoServicoFuncionario;
    private Funcionario funcionario;
    private Servico servico;

    public managerCadServicoFuncionario(ServicoFuncionario cservicoFuncionario) {
        cadServicoFuncionario = CadServicoFuncionario.getInstance(this);
        daoServicoFuncionario = new DaoServicoFuncionario();
        if (cservicoFuncionario == null) {
            servicoFuncionario = new ServicoFuncionario();
        } else {
            servicoFuncionario = cservicoFuncionario;
        }
        cadServicoFuncionario.setVisible(true);
    }

    @Override
    public boolean salvar() {
        try {
            if (servicoFuncionario == null) {
                servicoFuncionario = new ServicoFuncionario();
            }

            if (setData()) {
                daoServicoFuncionario.salvar(servicoFuncionario);
                
            }
            atualizarTabela();
            return true;
        } catch (Exception e) {
            System.out.println(e.getMessage());
            return false;
        }
    }

    @Override
    public List carregar() {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public boolean setData() {
        try {
            servicoFuncionario.setFuncionario(funcionario);
            servicoFuncionario.setServico(servico);
            servicoFuncionario.setPercComissao(Double.parseDouble(cadServicoFuncionario.edtPercComissao.getText()));
      //      servicoFuncionario.setTempoServico(Time.valueOf(cadServicoFuncionario.edtTempoServico.getText()));
            servicoFuncionario.setValorServico(Double.parseDouble(cadServicoFuncionario.edtValorServico.getText()));
            return true;

        } catch (Exception e) {
            return false;
        }
    }

    @Override
    public void getData() {
        cadServicoFuncionario.edtCodFuncionario.setText(servicoFuncionario.getFuncionario().getIdFuncionario().toString());
        cadServicoFuncionario.edtFuncionario.setText(servicoFuncionario.getFuncionario().getNome());
        cadServicoFuncionario.edtCodServico.setText(servicoFuncionario.getServico().getIdServico().toString());
        cadServicoFuncionario.edtServico.setText(servicoFuncionario.getServico().getDescricao());
        cadServicoFuncionario.edtPercComissao.setText(servicoFuncionario.getPercComissao().toString());
        cadServicoFuncionario.edtTempoServico.setText(servicoFuncionario.getTempoServico().toString());
        cadServicoFuncionario.edtValorServico.setText(servicoFuncionario.getValorServico().toString());        
    }

    public final void atualizarTabela() {

        if (tabela == null) {
            tabela = new TabelaDeDados(cadServicoFuncionario.tblServicoFuncionario);

            tabela.adicionarColuna("Código", 15);
            tabela.adicionarColuna("Funcionario", 40);
            tabela.adicionarColuna("Serviço", 45);
            cadServicoFuncionario.tblServicoFuncionario.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
                @Override
                @SuppressWarnings("empty-statement")
                public void valueChanged(ListSelectionEvent e) {
                    if (e.getValueIsAdjusting()) {
                        servicoFuncionario = (ServicoFuncionario) tabela.getObjetoSelecionado();
                        getData();
                    }
                    ;
                }
            });

        }
        tabela.removerTodos();
        List<ServicoFuncionario> dados = daoServicoFuncionario.consultar(funcionario.getIdFuncionario().toString(), "IdFuncionario");

        ServicoFuncionario aux;
        for (int i = 0; i < dados.size(); i++) {
            aux = (ServicoFuncionario) dados.get(i);
            Object[] linha = {aux.getFuncionario().getNome().toString(), aux.getServico().getDescricao().toString()};
            tabela.adicionarLinha(linha);
        }
        tabela.setDados(dados);

    }

    public void carregaPesquisaFuncionario() {
        managerPesquisaFuncionario pesquisa = new managerPesquisaFuncionario();
        funcionario = pesquisa.managerPesquisaFuncionario();
        cadServicoFuncionario.edtCodFuncionario.setText(funcionario.getIdFuncionario().toString());
        cadServicoFuncionario.edtFuncionario.setText(funcionario.getNome());
        cadServicoFuncionario.edtCodServico.requestFocusInWindow();
        servico = new Servico();
        atualizarTabela();
    }

    public void carregaPesquisaServico() {
        managerPesquisaServico pesquisa = new managerPesquisaServico();
        servico = pesquisa.managerPesquisaServico();
        cadServicoFuncionario.edtCodServico.setText(servico.getIdServico().toString());
        cadServicoFuncionario.edtServico.setText(servico.getDescricao());
    }
    public boolean remover(){
        boolean resultado = daoServicoFuncionario.remover(servicoFuncionario);
        atualizarTabela();
        return resultado;
    }
}
